草庐IT

MySQL Workbench 符号引用

全部标签

c++ - 将有符号整数转换为二进制 float 是否比逆运算便宜?

我从诸如“Whyyoushouldnevercastfloatstoints”之类的文章和许多其他喜欢它的文章中了解到,将浮点数转换为带符号的整数是很昂贵的。我也知道某些架构上的某些转换指令或SIMDvector指令可以加快该过程。我很好奇将整数转换为浮点数是否也很昂贵,因为我在该主题上找到的所有Material都只讨论了从浮点数转换为整数的成本。在有人说“你为什么不测试它之前?”我不是在谈论特定架构上的性能,我对遵循IEEE754-2008的跨多个平台转换的算法行为感兴趣。标准。转换算法是否有一些固有的东西会影响一般的性能?直觉上,我认为从整数到浮点的转换通常会更容易,原因如下:仅当

c++ - `std::shared_ptr` 的智能指针模拟,带有用于将回调绑定(bind)到引用计数修改事件的 API,例如释放/保留……这是一回事吗?

我需要一个智能指针结构-类似于std::shared_ptr-它为我提供了某种带有公开Hook的API,回调到引用计数修改事件(例如释放/保留,又名refcout增量/减量)可以绑定(bind)。我要么想自己实现,要么使用现成的东西,如果它存在的话。比如,我希望在定义这个假定的shared_ptr-ish智能指针(就像delete-expressions和deleterfunctor分别在shared_ptr和unique_ptr定义中使用。编辑(来self下面的评论)——这就是我想要这个的原因:我目前有一个Image类模板,在它的核心,有一个std::shared_ptr持有一个(可

c++ - 如何创建对对象的常量引用?

我的设计包含3个类作为我的数据结构。我们将类称为A、B和C。在解析我的输入时,我必须实例化A、B和C的对象。C类的每个对象都需要跟踪A和B类中的相应对象。我当前的实现如下所示:classC{private:A*a;B*b;public:voidsetA(A*a);voidsetB(B*b);}当我使用new创建A和B的对象时,我分配了a和b运算符。问题是我不希望类C的对象能够修改a和b。其实我只需要知道哪个a和b对应一个具体的c即可。一种解决方案是将a和b定义为const指针/对象引用。但是,在对象引用的情况下,我需要在声明它们后立即定义它们。问题是我正在解析多个文件,并且在定义它们时

c++ - 在这种情况下返回引用是好的风格吗?

我偶然发现了EvanTeran在SplitastringinC++?上的回答,其中他通过引用获取一个vector,修改它并返回它的引用。std::vector&split(conststd::string&s,chardelim,std::vector&elems){std::stringstreamss(s);std::stringitem;while(std::getline(ss,item,delim)){elems.push_back(item);}returnelems;}这种风格好吗?我看到优点是直接使用结果,比如std::vectorvec;unsignedintuiSi

c++ - Visual C++ 编译器为不明确的符号提供了错误的行引用

代码如下:namespacen1{templatevoidn2();templatevoidn2(T);}namespacen2/*line12*/{classc{};}usingnamespacen1;namespacen3{voidfoo(n2::c);}voidn3::foo(n2::c)/*line24*/{}尝试使用最新版本的VisualC++编译它时出现以下错误:1>test.cpp(24):errorC2872:'n2':ambiguoussymbol1>test.cpp(12):note:couldbe'n2'1>test.cpp(24):note:or'n2'第12行

C++符号分析: how to determine which static initialization is performed?

我想分析是什么原因导致我在Linux上由GCC(v.6.1.1)编译的共享C++库的大小。readelf-sWlibfoo.so告诉我特别大的函数叫做__static_initialization_and_destruction_0,例如:000000000026c42010272FUNCLOCALDEFAULT12__static_initialization_and_destruction_0(int,int)[clone.constprop.1774]我将-Wl,-Map,foo.map添加到CXX标志以生成链接器映射文件。在该映射文件中查找0x000000000026c420会

c++ - 如何将 Visual Studio 中的“查找所有引用”仅限于相关变量

对于C++文件,为什么右键单击变量用法的“查找所有引用”选项会返回整个项目中的所有拼写用法,无论是否相关。这个Find操作如何仅限于实际相关的变量? 最佳答案 至于MSVC2015Update2,它确实找到了对变量的所有引用,包括注释和字符串。当您获得引用列表时,您可以看到每个元素的不同图标表示不同类型的引用:例如具有相同名称的注释、字符串或变量。浏览列表时,您有两个选择:访问所有找到的位置(F4、Shift+F4)或使用黑色箭头按钮仅访问确认的引用,如下所示:如果搜索无法正常工作,我还建议重新扫描解决方案(解决方案资源管理器>右键

c++ - 尾随返回类型、declval 和引用限定符 : can they work together?

考虑以下示例:#includestructA{voidf(){}};structB{voidf()&{}};structC{voidf()&&{}};templateautof()->decltype(std::declval().f()){}intmain(){f();//f();//(*)f();}当用B调用时(第(*)行),代码不再编译std::declval转换T在特定情况下为右值引用类型。如果我们稍微改变一下,就会遇到相反的问题://...templateautof()->decltype(std::declval().f()){}//...intmain(){f();f()

c++ - 引用函数按值返回和自动

根据我的理解,当您将变量定义为对按值返回的函数的引用时,您实际上拥有对生命周期绑定(bind)到该引用的临时对象的引用,并且您必须将该引用声明为常量。话虽这么说,为什么不将临时定义为const,以便下面示例中的a2自动成为const?如果不允许将非常量引用绑定(bind)到该临时对象,那么为什么不默认使临时对象本身const呢?保持它非常量的原因是什么?#includestd::stringgetStringA(){std::stringmyString="SomeString";returnmyString;}conststd::stringgetStringB(){std::str

c++ - 通过对其基类的引用移动对象后,对象的状态是什么?

假设,有两个类的层次结构:classBase{};classFoo:publicBase{};像这样使用:Foofoo;Base&base=foo;Basemoved=std::move(base);在这样的移动之后foo处于什么状态?标准是否对此类代码有任何限制要求? 最佳答案 标准没有对不属于标准库的C++类的移动构造函数提出任何此类要求。图书馆作家可以自由地做他们想做的事。对于作为标准库一部分的组件,C++17标准确实说明了一些事情(强调我的)§20.5.5.15库类型的移出状态[lib.types.movedfrom]Obj